《部署與 CI/CD,Trino 在雲端》系列中,我們說明了 Trino 的雲端部署方式、測試與正式環境的切分策略,並介紹了部署過程中的 CI/CD 流程及 Trino 的版本管理機制,完整呈現了 Trino Cluster 從地端到雲端的設定流程。
接下來《冰山不止一角,Iceberg 與 S3》將聚焦於 Trino 最常搭配的 Catalog 之一 :Iceberg on S3。
我們將從 Iceberg 的基本概念談起,延伸至其與 S3 的關係,以及為何 Iceberg 是建構 Data Lakehouse 架構的理想選擇。
透過 Iceberg on S3 的實例與應用說明,使讀者能更具體理解資料湖倉的核心精神與實作方式。
Iceberg is a high-performance format for huge analytic tables. Iceberg brings the reliability and simplicity of SQL tables to big data, while making it possible for engines like Spark, Trino, Flink, Presto, Hive and Impala to safely work with the same tables, at the same time.
根據官方文檔定義,Iceberg 是種專門為「大數據分析」設計的表格格式,提供像 AWS S3、Google Cloud Storage、HDFS 等大數據儲存系統一個資料的 「Metadata 管理層」,使大數據分析資料表能夠:
Iceberg 僅透過表格格式的設計,便使本來難以查詢的大數據儲存系統變得可愛,但這些好處概念太過抽象,故筆者將就專案上使用之 Iceberg on S3 的資料階層、中繼資料及其設計的用意做詳細說明。
上圖可以看到此為 Iceberg on S3 的典型資料階層,分成:
data/
:儲存實體資料檔案(如 Parquet/Avro/ORC) 的目錄。 特性為 *immutable、append-only,並支援分區 (partition)。metadata/
:儲存 Iceberg 表的 metadata 與版本控管資訊,是整個表格格式的核心元件。manifest
: metadata/ 下的 Avro 檔,用於索引實體資料檔案,記錄資料的 metadata 如分區 (partition)、資料筆數 及 欄位統計值 等資訊。snapshot
: metadata/下用於記錄某一時點 Iceberg 表狀態的檔案。*immutable(不變性):指資料檔案一經產生即不可變更,任何資料變動會透過新增新檔案。
系列文明日《冰山不止一角,Iceberg 與 S3 (二)》,我們將深入探討 Iceberg on S3 中兩個核心角色 — manifest
與 snapshot
。
它們就像「目錄」與「時光機」,分別負責掌管檔案的組織結構,以及資料在不同時間點的全貌。透過這篇,你會理解為什麼 Iceberg 能在龐大的 S3 世界裡,依然快速又精準地找到想要的資料。
My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/